// 设置文件
import setting from '@/setting.js'

export default {
  namespaced: true,
  state: {
    // 主题
    list: setting.theme.list,
    // 现在激活的主题 这应该是一个名字 不是对象
    activeName: setting.theme.list[0].name,
    // 小程序页面高度
    windowHeight: 0
  },
  getters: {
    /**
     * @description 返回当前的主题信息 不是一个名字 而是当前激活主题的所有数据
     * @param {Object} state vuex state
     */
    activeSetting (state) {
      return state.list.find(theme => theme.name === state.activeName)
    }
  },
  actions: {
    /**
     * 激活一个主题
     * @param state
     * @param commit
     * @param dispatch
     * @param themeName
     * @param getters
     * @returns {Promise<any>}
     */
    set ({ state, commit, dispatch, getters }, themeName) {
      return new Promise(async resolve => {
        // 检查这个主题在主题列表里是否存在
        state.activeName = state.list.find(e => e.name === themeName) ? themeName : state.list[0].name
        console.log(getters.activeSetting)

        // 设置导航条的背景
        await Megalo.setNavigationBarColor({
          frontColor: getters.activeSetting.navigationBarTextStyle,
          backgroundColor: getters.activeSetting.navigationBarBackgroundColor
        })

        // 设置底部栏的背景
        await Megalo.setTabBarStyle({
          color: getters.activeSetting.tabBarColor,
          selectedColor: getters.activeSetting.tabBarSelectedColor,
          backgroundColor: getters.activeSetting.tabBarBackgroundColor,
          borderStyle: getters.activeSetting.tabBarBorderStyle
        })

        // end
        resolve()
      })
    },

    /**
     * 获取小程序的页面高度
     * @param state
     * @returns {Promise<any>}
     */
    getSystemInfo ({ state }) {
      return new Promise(async resolve => {
        let res = await Megalo.getSystemInfo()
        state.windowHeight = `${res.windowHeight}px`
        // end
        resolve()
      })
    }
  },
  mutations: {
  }
}
